// $ANTLR 3.4 C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g 2012-11-07 16:01:54

  package practica8;
  import java.util.Hashtable;


import org.antlr.runtime.*;
import java.util.Stack;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.util.HashMap;

@SuppressWarnings({"all", "warnings", "unchecked"})
public class CodigoCParser extends Parser {
    public static final String[] tokenNames = new String[] {
        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "BLANCO", "BREAK", "CADENA", "CHAR", "COMA", "COMILLAS", "COMPARADOR", "DIGITO", "DIV", "IDENT", "IF", "IGUAL", "INT", "LETRA", "LLAVE_A", "LLAVE_C", "MAIN", "MULT", "NUMERO", "PARENTESIS_A", "PARENTESIS_C", "PRINTF", "PUNTO_COMA", "RESTA", "SUMA", "VOID", "WHILE"
    };

    public static final int EOF=-1;
    public static final int BLANCO=4;
    public static final int BREAK=5;
    public static final int CADENA=6;
    public static final int CHAR=7;
    public static final int COMA=8;
    public static final int COMILLAS=9;
    public static final int COMPARADOR=10;
    public static final int DIGITO=11;
    public static final int DIV=12;
    public static final int IDENT=13;
    public static final int IF=14;
    public static final int IGUAL=15;
    public static final int INT=16;
    public static final int LETRA=17;
    public static final int LLAVE_A=18;
    public static final int LLAVE_C=19;
    public static final int MAIN=20;
    public static final int MULT=21;
    public static final int NUMERO=22;
    public static final int PARENTESIS_A=23;
    public static final int PARENTESIS_C=24;
    public static final int PRINTF=25;
    public static final int PUNTO_COMA=26;
    public static final int RESTA=27;
    public static final int SUMA=28;
    public static final int VOID=29;
    public static final int WHILE=30;

    // delegates
    public Parser[] getDelegates() {
        return new Parser[] {};
    }

    // delegators


    public CodigoCParser(TokenStream input) {
        this(input, new RecognizerSharedState());
    }
    public CodigoCParser(TokenStream input, RecognizerSharedState state) {
        super(input, state);
    }

    public String[] getTokenNames() { return CodigoCParser.tokenNames; }
    public String getGrammarFileName() { return "C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g"; }



        int bloque = 0;
        String tabulacion = "   ";
        String n_tab = "";
        
        private ArrayList<RecognitionException> errors = new ArrayList<RecognitionException>();
        public ArrayList<RecognitionException> getErrors() {
           return errors;
        }
        @Override
        public void reportError (RecognitionException e) {
           String msg = getErrorMessage(e, getTokenNames());
           System.err.println(msg);
           errors.add(e);
        }



    // $ANTLR start "entrada"
    // C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g:34:1: entrada returns [String salida = \"\"] : p= principal ;
    public final String entrada() throws RecognitionException {
        String salida =  "";


        String p =null;


        try {
            // C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g:34:37: (p= principal )
            // C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g:34:39: p= principal
            {
            pushFollow(FOLLOW_principal_in_entrada63);
            p=principal();

            state._fsp--;
            if (state.failed) return salida;

            if ( state.backtracking==0 ) {salida += p;}

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return salida;
    }
    // $ANTLR end "entrada"



    // $ANTLR start "principal"
    // C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g:38:1: principal returns [String salida = \"\"] : v= VOID m= MAIN p= parametros b= bloque ;
    public final String principal() throws RecognitionException {
        String salida =  "";


        Token v=null;
        Token m=null;
        String p =null;

        String b =null;


        try {
            // C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g:38:39: (v= VOID m= MAIN p= parametros b= bloque )
            // C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g:38:41: v= VOID m= MAIN p= parametros b= bloque
            {
            v=(Token)match(input,VOID,FOLLOW_VOID_in_principal80); if (state.failed) return salida;

            m=(Token)match(input,MAIN,FOLLOW_MAIN_in_principal84); if (state.failed) return salida;

            pushFollow(FOLLOW_parametros_in_principal88);
            p=parametros();

            state._fsp--;
            if (state.failed) return salida;

            pushFollow(FOLLOW_bloque_in_principal92);
            b=bloque();

            state._fsp--;
            if (state.failed) return salida;

            if ( state.backtracking==0 ) {salida += v.getText() + " " + m.getText() + p + b;}

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return salida;
    }
    // $ANTLR end "principal"



    // $ANTLR start "parametros"
    // C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g:42:1: parametros returns [String salida = \"\"] : (pa= PARENTESIS_A (v= VOID )? pc= PARENTESIS_C |pa= PARENTESIS_A t= tipo p= parametro (c= COMA tt= tipo pp= parametro )* pc= PARENTESIS_C );
    public final String parametros() throws RecognitionException {
        String salida =  "";


        Token pa=null;
        Token v=null;
        Token pc=null;
        Token c=null;
        String t =null;

        String p =null;

        String tt =null;

        String pp =null;


        try {
            // C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g:42:40: (pa= PARENTESIS_A (v= VOID )? pc= PARENTESIS_C |pa= PARENTESIS_A t= tipo p= parametro (c= COMA tt= tipo pp= parametro )* pc= PARENTESIS_C )
            int alt3=2;
            int LA3_0 = input.LA(1);

            if ( (LA3_0==PARENTESIS_A) ) {
                switch ( input.LA(2) ) {
                case VOID:
                    {
                    int LA3_2 = input.LA(3);

                    if ( (LA3_2==PARENTESIS_C) ) {
                        alt3=1;
                    }
                    else if ( (LA3_2==IDENT||LA3_2==NUMERO) ) {
                        alt3=2;
                    }
                    else {
                        if (state.backtracking>0) {state.failed=true; return salida;}
                        NoViableAltException nvae =
                            new NoViableAltException("", 3, 2, input);

                        throw nvae;

                    }
                    }
                    break;
                case PARENTESIS_C:
                    {
                    alt3=1;
                    }
                    break;
                case CHAR:
                case INT:
                    {
                    alt3=2;
                    }
                    break;
                default:
                    if (state.backtracking>0) {state.failed=true; return salida;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 3, 1, input);

                    throw nvae;

                }

            }
            else {
                if (state.backtracking>0) {state.failed=true; return salida;}
                NoViableAltException nvae =
                    new NoViableAltException("", 3, 0, input);

                throw nvae;

            }
            switch (alt3) {
                case 1 :
                    // C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g:42:42: pa= PARENTESIS_A (v= VOID )? pc= PARENTESIS_C
                    {
                    pa=(Token)match(input,PARENTESIS_A,FOLLOW_PARENTESIS_A_in_parametros109); if (state.failed) return salida;

                    if ( state.backtracking==0 ) {salida += pa.getText();}

                    // C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g:42:84: (v= VOID )?
                    int alt1=2;
                    int LA1_0 = input.LA(1);

                    if ( (LA1_0==VOID) ) {
                        alt1=1;
                    }
                    switch (alt1) {
                        case 1 :
                            // C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g:42:85: v= VOID
                            {
                            v=(Token)match(input,VOID,FOLLOW_VOID_in_parametros116); if (state.failed) return salida;

                            if ( state.backtracking==0 ) {salida += v.getText();}

                            }
                            break;

                    }


                    pc=(Token)match(input,PARENTESIS_C,FOLLOW_PARENTESIS_C_in_parametros124); if (state.failed) return salida;

                    if ( state.backtracking==0 ) {salida += pc.getText() + " ";}

                    }
                    break;
                case 2 :
                    // C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g:44:42: pa= PARENTESIS_A t= tipo p= parametro (c= COMA tt= tipo pp= parametro )* pc= PARENTESIS_C
                    {
                    pa=(Token)match(input,PARENTESIS_A,FOLLOW_PARENTESIS_A_in_parametros214); if (state.failed) return salida;

                    pushFollow(FOLLOW_tipo_in_parametros218);
                    t=tipo();

                    state._fsp--;
                    if (state.failed) return salida;

                    pushFollow(FOLLOW_parametro_in_parametros222);
                    p=parametro();

                    state._fsp--;
                    if (state.failed) return salida;

                    if ( state.backtracking==0 ) {salida += pa.getText() + t + p;}

                    // C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g:44:111: (c= COMA tt= tipo pp= parametro )*
                    loop2:
                    do {
                        int alt2=2;
                        int LA2_0 = input.LA(1);

                        if ( (LA2_0==COMA) ) {
                            alt2=1;
                        }


                        switch (alt2) {
                    	case 1 :
                    	    // C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g:44:112: c= COMA tt= tipo pp= parametro
                    	    {
                    	    c=(Token)match(input,COMA,FOLLOW_COMA_in_parametros229); if (state.failed) return salida;

                    	    pushFollow(FOLLOW_tipo_in_parametros233);
                    	    tt=tipo();

                    	    state._fsp--;
                    	    if (state.failed) return salida;

                    	    pushFollow(FOLLOW_parametro_in_parametros238);
                    	    pp=parametro();

                    	    state._fsp--;
                    	    if (state.failed) return salida;

                    	    if ( state.backtracking==0 ) {salida += c.getText() + " " + tt + pp;}

                    	    }
                    	    break;

                    	default :
                    	    break loop2;
                        }
                    } while (true);


                    pc=(Token)match(input,PARENTESIS_C,FOLLOW_PARENTESIS_C_in_parametros246); if (state.failed) return salida;

                    if ( state.backtracking==0 ) {salida += pc.getText() + " ";}

                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return salida;
    }
    // $ANTLR end "parametros"



    // $ANTLR start "tipo"
    // C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g:47:1: tipo returns [String salida = \"\"] : (i= INT |c= CHAR |v= VOID );
    public final String tipo() throws RecognitionException {
        String salida =  "";


        Token i=null;
        Token c=null;
        Token v=null;

        try {
            // C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g:47:34: (i= INT |c= CHAR |v= VOID )
            int alt4=3;
            switch ( input.LA(1) ) {
            case INT:
                {
                alt4=1;
                }
                break;
            case CHAR:
                {
                alt4=2;
                }
                break;
            case VOID:
                {
                alt4=3;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return salida;}
                NoViableAltException nvae =
                    new NoViableAltException("", 4, 0, input);

                throw nvae;

            }

            switch (alt4) {
                case 1 :
                    // C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g:47:36: i= INT
                    {
                    i=(Token)match(input,INT,FOLLOW_INT_in_tipo262); if (state.failed) return salida;

                    if ( state.backtracking==0 ) {salida += i.getText();}

                    }
                    break;
                case 2 :
                    // C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g:49:36: c= CHAR
                    {
                    c=(Token)match(input,CHAR,FOLLOW_CHAR_in_tipo340); if (state.failed) return salida;

                    if ( state.backtracking==0 ) {salida += c.getText();}

                    }
                    break;
                case 3 :
                    // C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g:51:36: v= VOID
                    {
                    v=(Token)match(input,VOID,FOLLOW_VOID_in_tipo418); if (state.failed) return salida;

                    if ( state.backtracking==0 ) {salida += v.getText();}

                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return salida;
    }
    // $ANTLR end "tipo"



    // $ANTLR start "parametro"
    // C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g:54:1: parametro returns [String salida = \"\"] : (i= IDENT |n= NUMERO );
    public final String parametro() throws RecognitionException {
        String salida =  "";


        Token i=null;
        Token n=null;

        try {
            // C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g:54:39: (i= IDENT |n= NUMERO )
            int alt5=2;
            int LA5_0 = input.LA(1);

            if ( (LA5_0==IDENT) ) {
                alt5=1;
            }
            else if ( (LA5_0==NUMERO) ) {
                alt5=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return salida;}
                NoViableAltException nvae =
                    new NoViableAltException("", 5, 0, input);

                throw nvae;

            }
            switch (alt5) {
                case 1 :
                    // C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g:54:41: i= IDENT
                    {
                    i=(Token)match(input,IDENT,FOLLOW_IDENT_in_parametro434); if (state.failed) return salida;

                    if ( state.backtracking==0 ) {salida += i.getText();}

                    }
                    break;
                case 2 :
                    // C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g:54:76: n= NUMERO
                    {
                    n=(Token)match(input,NUMERO,FOLLOW_NUMERO_in_parametro442); if (state.failed) return salida;

                    if ( state.backtracking==0 ) {salida += n.getText();}

                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return salida;
    }
    // $ANTLR end "parametro"



    // $ANTLR start "bloque"
    // C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g:57:1: bloque returns [String salida = \"\"] : la= LLAVE_A (s= sentencias )* lc= LLAVE_C ;
    public final String bloque() throws RecognitionException {
        String salida =  "";


        Token la=null;
        Token lc=null;
        String s =null;


        try {
            // C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g:57:36: (la= LLAVE_A (s= sentencias )* lc= LLAVE_C )
            // C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g:57:38: la= LLAVE_A (s= sentencias )* lc= LLAVE_C
            {
            la=(Token)match(input,LLAVE_A,FOLLOW_LLAVE_A_in_bloque458); if (state.failed) return salida;

            if ( state.backtracking==0 ) {salida += la.getText() + '\n'; n_tab += tabulacion;}

            // C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g:57:103: (s= sentencias )*
            loop6:
            do {
                int alt6=2;
                int LA6_0 = input.LA(1);

                if ( (LA6_0==BREAK||LA6_0==CHAR||(LA6_0 >= IDENT && LA6_0 <= IF)||LA6_0==INT||LA6_0==PRINTF||(LA6_0 >= VOID && LA6_0 <= WHILE)) ) {
                    alt6=1;
                }


                switch (alt6) {
            	case 1 :
            	    // C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g:57:104: s= sentencias
            	    {
            	    pushFollow(FOLLOW_sentencias_in_bloque465);
            	    s=sentencias();

            	    state._fsp--;
            	    if (state.failed) return salida;

            	    if ( state.backtracking==0 ) {salida += n_tab + s;}

            	    }
            	    break;

            	default :
            	    break loop6;
                }
            } while (true);


            lc=(Token)match(input,LLAVE_C,FOLLOW_LLAVE_C_in_bloque473); if (state.failed) return salida;

            if ( state.backtracking==0 ) {n_tab = n_tab.substring(0, n_tab.length()-3); salida += n_tab + lc.getText() + '\n';}

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return salida;
    }
    // $ANTLR end "bloque"



    // $ANTLR start "sentencias"
    // C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g:60:1: sentencias returns [String salida = \"\"] : (bw= bucle_while |ci= condicional_if |s= salir |d= declaracion |i= imprimir |a= asignacion );
    public final String sentencias() throws RecognitionException {
        String salida =  "";


        String bw =null;

        String ci =null;

        String s =null;

        String d =null;

        String i =null;

        String a =null;


        try {
            // C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g:60:40: (bw= bucle_while |ci= condicional_if |s= salir |d= declaracion |i= imprimir |a= asignacion )
            int alt7=6;
            switch ( input.LA(1) ) {
            case WHILE:
                {
                alt7=1;
                }
                break;
            case IF:
                {
                alt7=2;
                }
                break;
            case BREAK:
                {
                alt7=3;
                }
                break;
            case CHAR:
            case INT:
            case VOID:
                {
                alt7=4;
                }
                break;
            case PRINTF:
                {
                alt7=5;
                }
                break;
            case IDENT:
                {
                alt7=6;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return salida;}
                NoViableAltException nvae =
                    new NoViableAltException("", 7, 0, input);

                throw nvae;

            }

            switch (alt7) {
                case 1 :
                    // C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g:60:42: bw= bucle_while
                    {
                    pushFollow(FOLLOW_bucle_while_in_sentencias489);
                    bw=bucle_while();

                    state._fsp--;
                    if (state.failed) return salida;

                    if ( state.backtracking==0 ) {salida += bw;}

                    }
                    break;
                case 2 :
                    // C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g:60:75: ci= condicional_if
                    {
                    pushFollow(FOLLOW_condicional_if_in_sentencias497);
                    ci=condicional_if();

                    state._fsp--;
                    if (state.failed) return salida;

                    if ( state.backtracking==0 ) {salida += ci;}

                    }
                    break;
                case 3 :
                    // C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g:60:111: s= salir
                    {
                    pushFollow(FOLLOW_salir_in_sentencias505);
                    s=salir();

                    state._fsp--;
                    if (state.failed) return salida;

                    if ( state.backtracking==0 ) {salida += s;}

                    }
                    break;
                case 4 :
                    // C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g:60:136: d= declaracion
                    {
                    pushFollow(FOLLOW_declaracion_in_sentencias513);
                    d=declaracion();

                    state._fsp--;
                    if (state.failed) return salida;

                    if ( state.backtracking==0 ) {salida += d;}

                    }
                    break;
                case 5 :
                    // C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g:60:167: i= imprimir
                    {
                    pushFollow(FOLLOW_imprimir_in_sentencias521);
                    i=imprimir();

                    state._fsp--;
                    if (state.failed) return salida;

                    if ( state.backtracking==0 ) {salida += i;}

                    }
                    break;
                case 6 :
                    // C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g:60:195: a= asignacion
                    {
                    pushFollow(FOLLOW_asignacion_in_sentencias529);
                    a=asignacion();

                    state._fsp--;
                    if (state.failed) return salida;

                    if ( state.backtracking==0 ) {salida += a;}

                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return salida;
    }
    // $ANTLR end "sentencias"



    // $ANTLR start "bucle_while"
    // C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g:63:1: bucle_while returns [String salida = \"\"] : w= WHILE c= condicion b= bloque ;
    public final String bucle_while() throws RecognitionException {
        String salida =  "";


        Token w=null;
        String c =null;

        String b =null;


        try {
            // C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g:63:41: (w= WHILE c= condicion b= bloque )
            // C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g:63:43: w= WHILE c= condicion b= bloque
            {
            w=(Token)match(input,WHILE,FOLLOW_WHILE_in_bucle_while545); if (state.failed) return salida;

            pushFollow(FOLLOW_condicion_in_bucle_while549);
            c=condicion();

            state._fsp--;
            if (state.failed) return salida;

            pushFollow(FOLLOW_bloque_in_bucle_while553);
            b=bloque();

            state._fsp--;
            if (state.failed) return salida;

            if ( state.backtracking==0 ) {salida += w.getText() + c + b;}

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return salida;
    }
    // $ANTLR end "bucle_while"



    // $ANTLR start "condicional_if"
    // C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g:66:1: condicional_if returns [String salida = \"\"] : i= IF c= condicion b= bloque ;
    public final String condicional_if() throws RecognitionException {
        String salida =  "";


        Token i=null;
        String c =null;

        String b =null;


        try {
            // C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g:66:44: (i= IF c= condicion b= bloque )
            // C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g:66:46: i= IF c= condicion b= bloque
            {
            i=(Token)match(input,IF,FOLLOW_IF_in_condicional_if569); if (state.failed) return salida;

            pushFollow(FOLLOW_condicion_in_condicional_if573);
            c=condicion();

            state._fsp--;
            if (state.failed) return salida;

            pushFollow(FOLLOW_bloque_in_condicional_if577);
            b=bloque();

            state._fsp--;
            if (state.failed) return salida;

            if ( state.backtracking==0 ) {salida += i.getText() + c + b;}

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return salida;
    }
    // $ANTLR end "condicional_if"



    // $ANTLR start "condicion"
    // C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g:69:1: condicion returns [String salida = \"\"] : pa= PARENTESIS_A (i= IDENT |c= comparacion ) pc= PARENTESIS_C ;
    public final String condicion() throws RecognitionException {
        String salida =  "";


        Token pa=null;
        Token i=null;
        Token pc=null;
        String c =null;


        try {
            // C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g:69:39: (pa= PARENTESIS_A (i= IDENT |c= comparacion ) pc= PARENTESIS_C )
            // C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g:69:41: pa= PARENTESIS_A (i= IDENT |c= comparacion ) pc= PARENTESIS_C
            {
            pa=(Token)match(input,PARENTESIS_A,FOLLOW_PARENTESIS_A_in_condicion593); if (state.failed) return salida;

            if ( state.backtracking==0 ) {salida += pa.getText();}

            // C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g:69:83: (i= IDENT |c= comparacion )
            int alt8=2;
            int LA8_0 = input.LA(1);

            if ( (LA8_0==IDENT) ) {
                int LA8_1 = input.LA(2);

                if ( (LA8_1==PARENTESIS_C) ) {
                    alt8=1;
                }
                else if ( (LA8_1==COMPARADOR||LA8_1==DIV||LA8_1==MULT||(LA8_1 >= RESTA && LA8_1 <= SUMA)) ) {
                    alt8=2;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return salida;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 8, 1, input);

                    throw nvae;

                }
            }
            else if ( (LA8_0==NUMERO||LA8_0==RESTA) ) {
                alt8=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return salida;}
                NoViableAltException nvae =
                    new NoViableAltException("", 8, 0, input);

                throw nvae;

            }
            switch (alt8) {
                case 1 :
                    // C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g:69:84: i= IDENT
                    {
                    i=(Token)match(input,IDENT,FOLLOW_IDENT_in_condicion600); if (state.failed) return salida;

                    if ( state.backtracking==0 ) {salida += i.getText();}

                    }
                    break;
                case 2 :
                    // C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g:69:119: c= comparacion
                    {
                    pushFollow(FOLLOW_comparacion_in_condicion608);
                    c=comparacion();

                    state._fsp--;
                    if (state.failed) return salida;

                    if ( state.backtracking==0 ) {salida += c;}

                    }
                    break;

            }


            pc=(Token)match(input,PARENTESIS_C,FOLLOW_PARENTESIS_C_in_condicion615); if (state.failed) return salida;

            if ( state.backtracking==0 ) {salida += pc.getText() + " ";}

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return salida;
    }
    // $ANTLR end "condicion"



    // $ANTLR start "comparacion"
    // C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g:72:1: comparacion returns [String salida = \"\"] : e1= expr c= COMPARADOR e2= expr ;
    public final String comparacion() throws RecognitionException {
        String salida =  "";


        Token c=null;
        String e1 =null;

        String e2 =null;


        try {
            // C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g:72:41: (e1= expr c= COMPARADOR e2= expr )
            // C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g:72:43: e1= expr c= COMPARADOR e2= expr
            {
            pushFollow(FOLLOW_expr_in_comparacion631);
            e1=expr();

            state._fsp--;
            if (state.failed) return salida;

            c=(Token)match(input,COMPARADOR,FOLLOW_COMPARADOR_in_comparacion635); if (state.failed) return salida;

            pushFollow(FOLLOW_expr_in_comparacion639);
            e2=expr();

            state._fsp--;
            if (state.failed) return salida;

            if ( state.backtracking==0 ) {salida += e1 + c.getText() + e2;}

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return salida;
    }
    // $ANTLR end "comparacion"



    // $ANTLR start "expr"
    // C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g:75:1: expr returns [String salida = \"\"] : (r= RESTA )? (n= NUMERO |i= IDENT ) (o= operador (rr= RESTA )? (n= NUMERO |i= IDENT ) )* ;
    public final String expr() throws RecognitionException {
        String salida =  "";


        Token r=null;
        Token n=null;
        Token i=null;
        Token rr=null;
        String o =null;


        try {
            // C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g:75:34: ( (r= RESTA )? (n= NUMERO |i= IDENT ) (o= operador (rr= RESTA )? (n= NUMERO |i= IDENT ) )* )
            // C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g:75:36: (r= RESTA )? (n= NUMERO |i= IDENT ) (o= operador (rr= RESTA )? (n= NUMERO |i= IDENT ) )*
            {
            // C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g:75:36: (r= RESTA )?
            int alt9=2;
            int LA9_0 = input.LA(1);

            if ( (LA9_0==RESTA) ) {
                alt9=1;
            }
            switch (alt9) {
                case 1 :
                    // C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g:75:37: r= RESTA
                    {
                    r=(Token)match(input,RESTA,FOLLOW_RESTA_in_expr656); if (state.failed) return salida;

                    if ( state.backtracking==0 ) {salida += r.getText();}

                    }
                    break;

            }


            // C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g:75:72: (n= NUMERO |i= IDENT )
            int alt10=2;
            int LA10_0 = input.LA(1);

            if ( (LA10_0==NUMERO) ) {
                alt10=1;
            }
            else if ( (LA10_0==IDENT) ) {
                alt10=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return salida;}
                NoViableAltException nvae =
                    new NoViableAltException("", 10, 0, input);

                throw nvae;

            }
            switch (alt10) {
                case 1 :
                    // C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g:75:73: n= NUMERO
                    {
                    n=(Token)match(input,NUMERO,FOLLOW_NUMERO_in_expr665); if (state.failed) return salida;

                    if ( state.backtracking==0 ) {salida += n.getText();}

                    }
                    break;
                case 2 :
                    // C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g:75:108: i= IDENT
                    {
                    i=(Token)match(input,IDENT,FOLLOW_IDENT_in_expr672); if (state.failed) return salida;

                    if ( state.backtracking==0 ) {salida += i.getText();}

                    }
                    break;

            }


            // C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g:75:142: (o= operador (rr= RESTA )? (n= NUMERO |i= IDENT ) )*
            loop13:
            do {
                int alt13=2;
                int LA13_0 = input.LA(1);

                if ( (LA13_0==DIV||LA13_0==MULT||(LA13_0 >= RESTA && LA13_0 <= SUMA)) ) {
                    alt13=1;
                }


                switch (alt13) {
            	case 1 :
            	    // C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g:75:143: o= operador (rr= RESTA )? (n= NUMERO |i= IDENT )
            	    {
            	    pushFollow(FOLLOW_operador_in_expr680);
            	    o=operador();

            	    state._fsp--;
            	    if (state.failed) return salida;

            	    if ( state.backtracking==0 ) {salida += o;}

            	    // C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g:75:169: (rr= RESTA )?
            	    int alt11=2;
            	    int LA11_0 = input.LA(1);

            	    if ( (LA11_0==RESTA) ) {
            	        alt11=1;
            	    }
            	    switch (alt11) {
            	        case 1 :
            	            // C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g:75:170: rr= RESTA
            	            {
            	            rr=(Token)match(input,RESTA,FOLLOW_RESTA_in_expr687); if (state.failed) return salida;

            	            if ( state.backtracking==0 ) {salida += rr.getText();}

            	            }
            	            break;

            	    }


            	    // C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g:75:207: (n= NUMERO |i= IDENT )
            	    int alt12=2;
            	    int LA12_0 = input.LA(1);

            	    if ( (LA12_0==NUMERO) ) {
            	        alt12=1;
            	    }
            	    else if ( (LA12_0==IDENT) ) {
            	        alt12=2;
            	    }
            	    else {
            	        if (state.backtracking>0) {state.failed=true; return salida;}
            	        NoViableAltException nvae =
            	            new NoViableAltException("", 12, 0, input);

            	        throw nvae;

            	    }
            	    switch (alt12) {
            	        case 1 :
            	            // C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g:75:208: n= NUMERO
            	            {
            	            n=(Token)match(input,NUMERO,FOLLOW_NUMERO_in_expr696); if (state.failed) return salida;

            	            if ( state.backtracking==0 ) {salida += n.getText();}

            	            }
            	            break;
            	        case 2 :
            	            // C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g:75:243: i= IDENT
            	            {
            	            i=(Token)match(input,IDENT,FOLLOW_IDENT_in_expr703); if (state.failed) return salida;

            	            if ( state.backtracking==0 ) {salida += i.getText();}

            	            }
            	            break;

            	    }


            	    }
            	    break;

            	default :
            	    break loop13;
                }
            } while (true);


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return salida;
    }
    // $ANTLR end "expr"



    // $ANTLR start "operador"
    // C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g:78:1: operador returns [String salida = \"\"] : (s= SUMA |r= RESTA |m= MULT |d= DIV );
    public final String operador() throws RecognitionException {
        String salida =  "";


        Token s=null;
        Token r=null;
        Token m=null;
        Token d=null;

        try {
            // C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g:78:38: (s= SUMA |r= RESTA |m= MULT |d= DIV )
            int alt14=4;
            switch ( input.LA(1) ) {
            case SUMA:
                {
                alt14=1;
                }
                break;
            case RESTA:
                {
                alt14=2;
                }
                break;
            case MULT:
                {
                alt14=3;
                }
                break;
            case DIV:
                {
                alt14=4;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return salida;}
                NoViableAltException nvae =
                    new NoViableAltException("", 14, 0, input);

                throw nvae;

            }

            switch (alt14) {
                case 1 :
                    // C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g:78:40: s= SUMA
                    {
                    s=(Token)match(input,SUMA,FOLLOW_SUMA_in_operador722); if (state.failed) return salida;

                    if ( state.backtracking==0 ) {salida += s.getText();}

                    }
                    break;
                case 2 :
                    // C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g:80:40: r= RESTA
                    {
                    r=(Token)match(input,RESTA,FOLLOW_RESTA_in_operador808); if (state.failed) return salida;

                    if ( state.backtracking==0 ) {salida += r.getText();}

                    }
                    break;
                case 3 :
                    // C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g:82:40: m= MULT
                    {
                    m=(Token)match(input,MULT,FOLLOW_MULT_in_operador894); if (state.failed) return salida;

                    if ( state.backtracking==0 ) {salida += m.getText();}

                    }
                    break;
                case 4 :
                    // C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g:84:40: d= DIV
                    {
                    d=(Token)match(input,DIV,FOLLOW_DIV_in_operador980); if (state.failed) return salida;

                    if ( state.backtracking==0 ) {salida += d.getText();}

                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return salida;
    }
    // $ANTLR end "operador"



    // $ANTLR start "salir"
    // C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g:87:1: salir returns [String salida = \"\"] : b= BREAK pc= PUNTO_COMA ;
    public final String salir() throws RecognitionException {
        String salida =  "";


        Token b=null;
        Token pc=null;

        try {
            // C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g:87:35: (b= BREAK pc= PUNTO_COMA )
            // C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g:87:37: b= BREAK pc= PUNTO_COMA
            {
            b=(Token)match(input,BREAK,FOLLOW_BREAK_in_salir996); if (state.failed) return salida;

            pc=(Token)match(input,PUNTO_COMA,FOLLOW_PUNTO_COMA_in_salir1000); if (state.failed) return salida;

            if ( state.backtracking==0 ) {salida += b.getText() + pc.getText() + '\n';}

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return salida;
    }
    // $ANTLR end "salir"



    // $ANTLR start "declaracion"
    // C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g:90:1: declaracion returns [String salida = \"\"] : t= tipo i= IDENT (c= COMA ii= IDENT )* pc= PUNTO_COMA ;
    public final String declaracion() throws RecognitionException {
        String salida =  "";


        Token i=null;
        Token c=null;
        Token ii=null;
        Token pc=null;
        String t =null;


        try {
            // C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g:90:41: (t= tipo i= IDENT (c= COMA ii= IDENT )* pc= PUNTO_COMA )
            // C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g:90:43: t= tipo i= IDENT (c= COMA ii= IDENT )* pc= PUNTO_COMA
            {
            pushFollow(FOLLOW_tipo_in_declaracion1016);
            t=tipo();

            state._fsp--;
            if (state.failed) return salida;

            if ( state.backtracking==0 ) {salida += t + " ";}

            i=(Token)match(input,IDENT,FOLLOW_IDENT_in_declaracion1022); if (state.failed) return salida;

            if ( state.backtracking==0 ) {salida += i.getText();}

            // C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g:90:104: (c= COMA ii= IDENT )*
            loop15:
            do {
                int alt15=2;
                int LA15_0 = input.LA(1);

                if ( (LA15_0==COMA) ) {
                    alt15=1;
                }


                switch (alt15) {
            	case 1 :
            	    // C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g:90:105: c= COMA ii= IDENT
            	    {
            	    c=(Token)match(input,COMA,FOLLOW_COMA_in_declaracion1029); if (state.failed) return salida;

            	    if ( state.backtracking==0 ) {salida += c.getText() + " ";}

            	    ii=(Token)match(input,IDENT,FOLLOW_IDENT_in_declaracion1035); if (state.failed) return salida;

            	    if ( state.backtracking==0 ) {salida += ii.getText();}

            	    }
            	    break;

            	default :
            	    break loop15;
                }
            } while (true);


            pc=(Token)match(input,PUNTO_COMA,FOLLOW_PUNTO_COMA_in_declaracion1043); if (state.failed) return salida;

            if ( state.backtracking==0 ) {salida += pc.getText() + '\n';}

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return salida;
    }
    // $ANTLR end "declaracion"



    // $ANTLR start "imprimir"
    // C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g:93:1: imprimir returns [String salida = \"\"] : p= PRINTF pa= PARENTESIS_A c= CADENA (cm= COMA i= IDENT )* pc= PARENTESIS_C pyc= PUNTO_COMA ;
    public final String imprimir() throws RecognitionException {
        String salida =  "";


        Token p=null;
        Token pa=null;
        Token c=null;
        Token cm=null;
        Token i=null;
        Token pc=null;
        Token pyc=null;

        try {
            // C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g:93:38: (p= PRINTF pa= PARENTESIS_A c= CADENA (cm= COMA i= IDENT )* pc= PARENTESIS_C pyc= PUNTO_COMA )
            // C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g:93:40: p= PRINTF pa= PARENTESIS_A c= CADENA (cm= COMA i= IDENT )* pc= PARENTESIS_C pyc= PUNTO_COMA
            {
            p=(Token)match(input,PRINTF,FOLLOW_PRINTF_in_imprimir1059); if (state.failed) return salida;

            pa=(Token)match(input,PARENTESIS_A,FOLLOW_PARENTESIS_A_in_imprimir1063); if (state.failed) return salida;

            c=(Token)match(input,CADENA,FOLLOW_CADENA_in_imprimir1067); if (state.failed) return salida;

            if ( state.backtracking==0 ) {salida += p.getText() + pa.getText() + c.getText();}

            // C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g:93:128: (cm= COMA i= IDENT )*
            loop16:
            do {
                int alt16=2;
                int LA16_0 = input.LA(1);

                if ( (LA16_0==COMA) ) {
                    alt16=1;
                }


                switch (alt16) {
            	case 1 :
            	    // C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g:93:129: cm= COMA i= IDENT
            	    {
            	    cm=(Token)match(input,COMA,FOLLOW_COMA_in_imprimir1074); if (state.failed) return salida;

            	    i=(Token)match(input,IDENT,FOLLOW_IDENT_in_imprimir1078); if (state.failed) return salida;

            	    if ( state.backtracking==0 ) {salida += cm.getText() + " " + i.getText();}

            	    }
            	    break;

            	default :
            	    break loop16;
                }
            } while (true);


            pc=(Token)match(input,PARENTESIS_C,FOLLOW_PARENTESIS_C_in_imprimir1086); if (state.failed) return salida;

            pyc=(Token)match(input,PUNTO_COMA,FOLLOW_PUNTO_COMA_in_imprimir1090); if (state.failed) return salida;

            if ( state.backtracking==0 ) {salida += pc.getText() + pyc.getText() + '\n';}

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return salida;
    }
    // $ANTLR end "imprimir"



    // $ANTLR start "asignacion"
    // C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g:96:1: asignacion returns [String salida = \"\"] : i= IDENT ig= IGUAL (e= expr |n= NUMERO ) pyc= PUNTO_COMA ;
    public final String asignacion() throws RecognitionException {
        String salida =  "";


        Token i=null;
        Token ig=null;
        Token n=null;
        Token pyc=null;
        String e =null;


        try {
            // C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g:96:40: (i= IDENT ig= IGUAL (e= expr |n= NUMERO ) pyc= PUNTO_COMA )
            // C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g:96:42: i= IDENT ig= IGUAL (e= expr |n= NUMERO ) pyc= PUNTO_COMA
            {
            i=(Token)match(input,IDENT,FOLLOW_IDENT_in_asignacion1106); if (state.failed) return salida;

            ig=(Token)match(input,IGUAL,FOLLOW_IGUAL_in_asignacion1110); if (state.failed) return salida;

            if ( state.backtracking==0 ) {salida += i.getText() + ig.getText();}

            // C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g:96:99: (e= expr |n= NUMERO )
            int alt17=2;
            int LA17_0 = input.LA(1);

            if ( (LA17_0==IDENT||LA17_0==RESTA) ) {
                alt17=1;
            }
            else if ( (LA17_0==NUMERO) ) {
                int LA17_2 = input.LA(2);

                if ( (synpred24_CodigoCParser()) ) {
                    alt17=1;
                }
                else if ( (true) ) {
                    alt17=2;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return salida;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 17, 2, input);

                    throw nvae;

                }
            }
            else {
                if (state.backtracking>0) {state.failed=true; return salida;}
                NoViableAltException nvae =
                    new NoViableAltException("", 17, 0, input);

                throw nvae;

            }
            switch (alt17) {
                case 1 :
                    // C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g:96:100: e= expr
                    {
                    pushFollow(FOLLOW_expr_in_asignacion1117);
                    e=expr();

                    state._fsp--;
                    if (state.failed) return salida;

                    if ( state.backtracking==0 ) {salida += e;}

                    }
                    break;
                case 2 :
                    // C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g:96:124: n= NUMERO
                    {
                    n=(Token)match(input,NUMERO,FOLLOW_NUMERO_in_asignacion1125); if (state.failed) return salida;

                    if ( state.backtracking==0 ) {salida += n.getText();}

                    }
                    break;

            }


            pyc=(Token)match(input,PUNTO_COMA,FOLLOW_PUNTO_COMA_in_asignacion1132); if (state.failed) return salida;

            if ( state.backtracking==0 ) {salida += pyc.getText() + '\n';}

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }

        finally {
        	// do for sure before leaving
        }
        return salida;
    }
    // $ANTLR end "asignacion"

    // $ANTLR start synpred24_CodigoCParser
    public final void synpred24_CodigoCParser_fragment() throws RecognitionException {
        String e =null;


        // C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g:96:100: (e= expr )
        // C:\\Users\\usuario\\workspace\\Practica8-PL\\src\\main\\java\\practica8\\CodigoCParser.g:96:100: e= expr
        {
        pushFollow(FOLLOW_expr_in_synpred24_CodigoCParser1117);
        e=expr();

        state._fsp--;
        if (state.failed) return ;

        }

    }
    // $ANTLR end synpred24_CodigoCParser

    // Delegated rules

    public final boolean synpred24_CodigoCParser() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred24_CodigoCParser_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }


 

    public static final BitSet FOLLOW_principal_in_entrada63 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_VOID_in_principal80 = new BitSet(new long[]{0x0000000000100000L});
    public static final BitSet FOLLOW_MAIN_in_principal84 = new BitSet(new long[]{0x0000000000800000L});
    public static final BitSet FOLLOW_parametros_in_principal88 = new BitSet(new long[]{0x0000000000040000L});
    public static final BitSet FOLLOW_bloque_in_principal92 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_PARENTESIS_A_in_parametros109 = new BitSet(new long[]{0x0000000021000000L});
    public static final BitSet FOLLOW_VOID_in_parametros116 = new BitSet(new long[]{0x0000000001000000L});
    public static final BitSet FOLLOW_PARENTESIS_C_in_parametros124 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_PARENTESIS_A_in_parametros214 = new BitSet(new long[]{0x0000000020010080L});
    public static final BitSet FOLLOW_tipo_in_parametros218 = new BitSet(new long[]{0x0000000000402000L});
    public static final BitSet FOLLOW_parametro_in_parametros222 = new BitSet(new long[]{0x0000000001000100L});
    public static final BitSet FOLLOW_COMA_in_parametros229 = new BitSet(new long[]{0x0000000020010080L});
    public static final BitSet FOLLOW_tipo_in_parametros233 = new BitSet(new long[]{0x0000000000402000L});
    public static final BitSet FOLLOW_parametro_in_parametros238 = new BitSet(new long[]{0x0000000001000100L});
    public static final BitSet FOLLOW_PARENTESIS_C_in_parametros246 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_INT_in_tipo262 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_CHAR_in_tipo340 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_VOID_in_tipo418 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_IDENT_in_parametro434 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_NUMERO_in_parametro442 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_LLAVE_A_in_bloque458 = new BitSet(new long[]{0x00000000620960A0L});
    public static final BitSet FOLLOW_sentencias_in_bloque465 = new BitSet(new long[]{0x00000000620960A0L});
    public static final BitSet FOLLOW_LLAVE_C_in_bloque473 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_bucle_while_in_sentencias489 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_condicional_if_in_sentencias497 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_salir_in_sentencias505 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_declaracion_in_sentencias513 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_imprimir_in_sentencias521 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_asignacion_in_sentencias529 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_WHILE_in_bucle_while545 = new BitSet(new long[]{0x0000000000800000L});
    public static final BitSet FOLLOW_condicion_in_bucle_while549 = new BitSet(new long[]{0x0000000000040000L});
    public static final BitSet FOLLOW_bloque_in_bucle_while553 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_IF_in_condicional_if569 = new BitSet(new long[]{0x0000000000800000L});
    public static final BitSet FOLLOW_condicion_in_condicional_if573 = new BitSet(new long[]{0x0000000000040000L});
    public static final BitSet FOLLOW_bloque_in_condicional_if577 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_PARENTESIS_A_in_condicion593 = new BitSet(new long[]{0x0000000008402000L});
    public static final BitSet FOLLOW_IDENT_in_condicion600 = new BitSet(new long[]{0x0000000001000000L});
    public static final BitSet FOLLOW_comparacion_in_condicion608 = new BitSet(new long[]{0x0000000001000000L});
    public static final BitSet FOLLOW_PARENTESIS_C_in_condicion615 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_expr_in_comparacion631 = new BitSet(new long[]{0x0000000000000400L});
    public static final BitSet FOLLOW_COMPARADOR_in_comparacion635 = new BitSet(new long[]{0x0000000008402000L});
    public static final BitSet FOLLOW_expr_in_comparacion639 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RESTA_in_expr656 = new BitSet(new long[]{0x0000000000402000L});
    public static final BitSet FOLLOW_NUMERO_in_expr665 = new BitSet(new long[]{0x0000000018201002L});
    public static final BitSet FOLLOW_IDENT_in_expr672 = new BitSet(new long[]{0x0000000018201002L});
    public static final BitSet FOLLOW_operador_in_expr680 = new BitSet(new long[]{0x0000000008402000L});
    public static final BitSet FOLLOW_RESTA_in_expr687 = new BitSet(new long[]{0x0000000000402000L});
    public static final BitSet FOLLOW_NUMERO_in_expr696 = new BitSet(new long[]{0x0000000018201002L});
    public static final BitSet FOLLOW_IDENT_in_expr703 = new BitSet(new long[]{0x0000000018201002L});
    public static final BitSet FOLLOW_SUMA_in_operador722 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RESTA_in_operador808 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_MULT_in_operador894 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_DIV_in_operador980 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_BREAK_in_salir996 = new BitSet(new long[]{0x0000000004000000L});
    public static final BitSet FOLLOW_PUNTO_COMA_in_salir1000 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_tipo_in_declaracion1016 = new BitSet(new long[]{0x0000000000002000L});
    public static final BitSet FOLLOW_IDENT_in_declaracion1022 = new BitSet(new long[]{0x0000000004000100L});
    public static final BitSet FOLLOW_COMA_in_declaracion1029 = new BitSet(new long[]{0x0000000000002000L});
    public static final BitSet FOLLOW_IDENT_in_declaracion1035 = new BitSet(new long[]{0x0000000004000100L});
    public static final BitSet FOLLOW_PUNTO_COMA_in_declaracion1043 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_PRINTF_in_imprimir1059 = new BitSet(new long[]{0x0000000000800000L});
    public static final BitSet FOLLOW_PARENTESIS_A_in_imprimir1063 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_CADENA_in_imprimir1067 = new BitSet(new long[]{0x0000000001000100L});
    public static final BitSet FOLLOW_COMA_in_imprimir1074 = new BitSet(new long[]{0x0000000000002000L});
    public static final BitSet FOLLOW_IDENT_in_imprimir1078 = new BitSet(new long[]{0x0000000001000100L});
    public static final BitSet FOLLOW_PARENTESIS_C_in_imprimir1086 = new BitSet(new long[]{0x0000000004000000L});
    public static final BitSet FOLLOW_PUNTO_COMA_in_imprimir1090 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_IDENT_in_asignacion1106 = new BitSet(new long[]{0x0000000000008000L});
    public static final BitSet FOLLOW_IGUAL_in_asignacion1110 = new BitSet(new long[]{0x0000000008402000L});
    public static final BitSet FOLLOW_expr_in_asignacion1117 = new BitSet(new long[]{0x0000000004000000L});
    public static final BitSet FOLLOW_NUMERO_in_asignacion1125 = new BitSet(new long[]{0x0000000004000000L});
    public static final BitSet FOLLOW_PUNTO_COMA_in_asignacion1132 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_expr_in_synpred24_CodigoCParser1117 = new BitSet(new long[]{0x0000000000000002L});

}